import wx from "weixin-js-sdk";
let jsApiList = ['chooseWXPay', 'openAddress', 'updateAppMessageShareData', 'updateTimelineShareData', 'scanQRCode',
	'getLocation', 'hideMenuItems'
]
let Weixin = {
	/**
	 * 初始化
	 * @param {Object} params 初始化参数
	 * @param {Array} jsApiList 数组
	 */
	init(params, jsApiList = jsApiList) {
		wx.config({
			debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
			appId: params.appId, // 必填，公众号的唯一标识
			timestamp: params.timestamp, // 必填，生成签名的时间戳
			nonceStr: params.nonceStr, // 必填，生成签名的随机串
			signature: params.signature, // 必填，签名
			jsApiList // 必填，需要使用的JS接口列表
		})
	},
	/**
	 * 发起支付
	 * @param {Object} jsApiParame 支付信息
	 * @param {Function} callback 回调方法
	 */
	pay(jsApiParame, callback) {
		wx.ready(function() {
			wx.chooseWXPay({
				// 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
				timestamp: jsApiParame.timestamp,
				nonceStr: jsApiParame.nonceStr, // 支付签名随机串，不长于 32 位
				package: jsApiParame.package, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=\*\*\*）
				signType: jsApiParame.signType, // 签名方式，默认为'SHA1'，使用新版支付需传入'MD5'
				paySign: jsApiParame.paySign, // 支付签名
				success: function(res) {
					typeof callback == 'function' && callback(res)
				}
			})
		})
	},
	/**
	 * 获取地理位置
	 * @param {Function} callback 回调方法
	 */
	getLocationInfo(callback) {
		wx.ready(function() {
			wx.getLocation({
				type: 'gcj02',
				success: function(res) {
					typeof callback == 'function' && callback(res)
				},
				fail: (res) => {
					typeof callback == 'function' && callback(null)
				}
			})
		})
	},
	/**
	 * 获取收货地址
	 * @param {Function} callback 回调方法
	 */
	openAddress() {
		wx.ready(function() {
			wx.openAddress({
				success: function(res) {
					typeof callback == 'function' && callback(res)
				},
				fail: (res) => {
					alert(JSON.stringify(res))
				}
			})
		})
	},
	/**
	 * 分享给好友
	 * @param {Object} params 传参
	 * @param {Function} callback 回调
	 */
	setShareData(params, callback) {
		wx.ready(function() {
			// 自定义“分享给朋友”及“分享到QQ”按钮的分享内容
			wx.updateAppMessageShareData({
				title: params.title || '', // 分享标题
				desc: params.desc || '', // 分享描述
				link: params.link || '', // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
				imgUrl: params.imgUrl || '', // 分享图标
				success: function(res) {
					typeof callback == 'function' && callback(res)
				},
				fail: function(res) {
					typeof callback == 'function' && callback(res)
				}
			})
			// 自定义“分享到朋友圈”及“分享到QQ空间”按钮的分享内容
			wx.updateTimelineShareData({
				title: params.title || '', // 分享标题
				link: params.link || '', // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
				imgUrl: params.imgUrl || '', // 分享图标
				success: function(res) {
					typeof callback == 'function' && callback(res)
				},
				fail: function(res) {
					// alert(`自定义分享朋友圈失败：${JSON.stringify(res)}`)
				}
			})
		});
	},
	/**
	 * 扫一扫
	 * @param {Function} callback
	 */
	scanQRCode() {
		wx.ready(function() {
			wx.scanQRCode({
				needResult: 1,
				scanType: ["qrCode"],
				success: function(res) {
					typeof callback == 'function' && callback(res)
				}
			})
		})
	},
}
export default Weixin;